/**
 * 工具类：里面封装了一些实用的方法
 */
var common = {

	/**
	 * 服务器请求路径前缀
	 */
	path: 'http://192.168.13.194/blog/',

	/**
	 * 封装的AJAX请求
	 * @param {Object} parentSelector 最终的内容存放到此元素里
	 * @param {Object} url 服务器请求路径后缀
	 * @param {Object} successCallback AJAX success回调函数
	 * @param {Object} method 请求方式（GET、POST），如果此参数不填写默认为GET
	 */
	ajax: function(parentSelector, url, successCallback, method) {
		$.ajax({
			type: method || 'GET',
			url: common.path + url,
			cache: false,
			timeout: 5000,
			success: successCallback,
			error: function() {
				parentSelector.append('<div class="alert alert-danger"><b>接口错误</b> 可能是服务器内部错误或请求超时！</div>');
			},
			beforeSend: function() {
				parentSelector.append('<div class="text-center"><i class="fa fa-spinner fa-pulse fa-3x"></i><div>');
			},
			complete: function() {
				parentSelector.children('.text-center').remove();
			}
		});
	},

	/**
	 * 使用Lodash渲染页面上
	 * 
	 * @param {Object} parentSelector 最终的内容存放到此元素里
	 * @param {Object} tplSelctor 模版元素
	 * @param {Object} result 渲染给模版的数据对象
	 */
	render: function(parentSelector, tplSelctor, result) {
		// 解析模板
		var compiled = _.template(tplSelctor.html());
		// 将返回的函数存储起来（就像我将它存储在compiled变量中一样），再通过调用该函数来渲染数据，特别是在同一个模板可能会被多次渲染的情况下，这样做能提高执行效率
		var html = compiled(result);
		parentSelector.append(html);
	},

	/**
	 * 获取地址上的查询参数，查询参数有可能有以下情况：
	 * ?a=1
	 * ?a=1&b=2
	 * ?a=1&b=2&c=3
	 * 
	 * @param {Object} param
	 */
	getParam: function(param) {
		var result;
		var params = location.search.substring(1).split('&');
		for (var i = 0; i < params.length; i++) {
			var keyValue = params[i].split('=');
			if (keyValue[0] === param) {
				result = keyValue[1];
				break;
			}
		}
		return result;
	}
}